import random

def generate_balloons(n=10, min_val=0, max_val=100):
    """
    生成随机气球坐标数据
    
    参数:
    n: int - 气球数量
    min_val: int - 坐标最小值
    max_val: int - 坐标最大值
    
    返回:
    list[list[int]] - 气球坐标列表，每个气球由其左右边界表示 [start, end]
    """
    balloons = []
    for _ in range(n):
        # 随机生成左右边界，保证左边界 <= 右边界
        start = random.randint(min_val, max_val)
        end = random.randint(start, max_val)
        balloons.append([start, end])
    
    return balloons

def generate_test_cases():
    """
    生成多个测试用例
    
    返回:
    list[list[list[int]]] - 多个测试用例，每个用例是一个气球坐标列表
    """
    test_cases = [
        # 典型用例
        [[10, 16], [2, 8], [1, 6], [7, 12]],
        
        # 极端情况: 气球完全不重叠
        [[1, 2], [3, 4], [5, 6], [7, 8]],
        
        # 极端情况: 所有气球共享一个点
        [[1, 5], [3, 5], [4, 5], [5, 8]],
        
        # 极端情况: 完全重叠的气球
        [[1, 10], [1, 10], [1, 10]],
        
        # 复杂情况
        [[1, 5], [3, 9], [7, 12], [11, 14], [13, 15]]
    ]
    
    # 添加一个随机大用例
    test_cases.append(generate_balloons(15, 0, 50))
    
    return test_cases

if __name__ == "__main__":
    # 显示一些随机生成的气球数据
    balloons = generate_balloons(8)
    print("随机生成的气球坐标:")
    for i, balloon in enumerate(balloons, 1):
        print(f"气球 {i}: {balloon}")
